package br.com.lopes.gci.controller;

import static br.com.lopes.gci.util.Constants.SCOPE_REQUEST;

import org.apache.log4j.Logger;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.context.annotation.Scope;

import br.com.lopes.gci.annotation.ManagedBean;
import br.com.lopes.gci.model.Funcionario;
import br.com.lopes.gci.util.Constants;
import br.com.lopes.gci.util.FacesUtil;

@ManagedBean
@Scope(SCOPE_REQUEST)
public class SessionController implements InitializingBean{
	
	public static final Logger LOGGER = Logger.getLogger(SessionController.class);
	
	public Funcionario usuarioLogado = getUserFromSession();
	
	@Override
	public void afterPropertiesSet() throws Exception {
		// TODO Auto-generated method stub		
	}
	
	public boolean isAdministrador(){
		return  getUserFromSession().getPerfil().getCodigo().equals(Constants.PERFIL_ADMINISTRADOR);
	}
	
	public boolean isFinanceiro(){
		return  getUserFromSession().getPerfil().getCodigo().equals(Constants.PERFIL_FINANCEIRO) ||
				getUserFromSession().getPerfil().getCodigo().equals(Constants.PERFIL_ADMINISTRADOR);
	}
	
	public boolean isAdministrativo(){
		return  getUserFromSession().getPerfil().getCodigo().equals(Constants.PERFIL_ADMINISTRATIVO) ||
				getUserFromSession().getPerfil().getCodigo().equals(Constants.PERFIL_ADMINISTRADOR);
	}
	
	public boolean isCorretor(){
		return  getUserFromSession().getPerfil().getCodigo().equals(Constants.PERFIL_CORRETOR) ||
				getUserFromSession().getPerfil().getCodigo().equals(Constants.PERFIL_ADMINISTRADOR);		
	}
	
	public boolean isDiretor(){
		return  getUserFromSession().getPerfil().getCodigo().equals(Constants.PERFIL_DIRETOR) ||
				getUserFromSession().getPerfil().getCodigo().equals(Constants.PERFIL_ADMINISTRADOR);
	}
	
	public boolean isGerente(){
		return  getUserFromSession().getPerfil().getCodigo().equals(Constants.PERFIL_GERENTE) ||
				getUserFromSession().getPerfil().getCodigo().equals(Constants.PERFIL_ADMINISTRADOR);
	}
	
	public boolean isSecretariaVenda(){
		return  getUserFromSession().getPerfil().getCodigo().equals(Constants.PERFIL_SECRETARIA_VENDA) || 
				getUserFromSession().getPerfil().getCodigo().equals(Constants.PERFIL_ADMINISTRADOR);		
	}
		
	public static Funcionario getUserFromSession() {
		return FacesUtil.<Funcionario>getSessionMapAttribute(Constants.AUTENTICATED_USER);
	}

	public Funcionario getUsuarioLogado() {
		return usuarioLogado;
	}

	public void setUsuarioLogado(Funcionario usuarioLogado) {
		this.usuarioLogado = usuarioLogado;
	}
}
